package com.bluedon.ism.commons.operationlog.aspect;

import com.bluedon.ism.commons.operationlog.process.impl.DefaultProcess;

import java.lang.annotation.*;

/**
 * 使用指南如下：
 * OperateLogAnnotation(moduleName="网吧申办"，operateTypeName="修改"，message="网吧申办-修改"，httpMethod="GET|POST|ALL",processing=实现类的class对象)
 * 	当moduleName和operateTypeName为不为空时，processing的配置数据会被忽略
 * OperateLogAnnotation(moduleName=""，operateTypeName=""，message="网吧申办-修改"，httpMethod="GET|POST|ALL",processing=实现类的class对象)
 *	当moduleName与operateTypeName为空时，processing的配置数据会为使用，processing具体实现查看DefaultProcess类与Process接口
 * 
 * log 注解
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface OperateLogAnnotation {
	/**
	 * 模块名称
	 * 
	 * @return
	 */
	String moduleName() default "";

	/**
	 * 操作类型名称
	 * 
	 * @return
	 */
	String operateTypeName()  default "";
	
	/**
	 * 操作内容
	 * 
	 * @return
	 */
	String message()  default "";
	
	/**
	 * http请求方式 默认为All,可以取值POST与GET方式
	 * 如果设置为Post方式只会拦截Post方式的请求，否则反之！
	 * @return
	 */
	String httpMethod() default "ALL";
	
	/**
	 * 如果processing没有配置，默认为DefaultProcess.class
	 * @link deaflutProcess
	 * @return
	 */
	Class processClass() default DefaultProcess.class;
}
